package j15;

public class J15_Interface {

	public static void main(String[] args) {
	//	J15SungJukService sjsrv = new J15SungJukService() { };
	//인터페이스 new연산자를 통해 객체로 만들 수 없다.
	// 반드시 이것을 상속(구현)란 클래스를 통해 객체로 생성할 수 있다.
		J15SungJukServiceImpl sjsrv = new J15SungJukServiceImpl();
		J15SungJukVO sj = new J15SungJukVO("지현",98,87,76);
		sj.setTot(sjsrv.getTotal(98,87,76));
		sj.setAvg(sjsrv.getAverrage(98,87,76));
		sj.setGrd(sjsrv.getGrade(98,87,76));
		System.out.println(sj.toString());
	}
}

	//인터페이스 정의(~Service)
interface J15SungJukService {
	//인터페이스가 제공할 메서드 정의
	//메서드는 서명까지만 작성
	//이러한 메서드를 추상 메서드라한다.
	
	int aaa =1;
	
	int getTotal(int kor, int eng, int mat);
//	int getTotal(J15SungJukVO sj);
	double getAverrage(int kor, int eng, int mat);
	char getGrade(int kor, int eng, int mat );
}



	//인터페이스를 구현한 클래스 작성(~Impl)
	class J15SungJukServiceImpl
	implements J15SungJukService {

		//성적처리에 필요한 기능(총점,평균,학점)들을
		//인터페이스로 분리해서 추상메서드로 정의하고
		//그것을 구현(Implements)해서 클래스로 작성
		//J15SungJukService (인터페이스)
		//	->J15SungJukServiceImpl (구현 클래스)
		@Override
		public int getTotal(int kor, int eng, int mat) {
			
			 int tot = kor+eng+mat;
			 return tot;
		}

		@Override
		public double getAverrage(int kor, int eng, int mat) {
			
			int avg = (kor+eng+mat)/3;
			return avg;
		}

		@Override
		public char getGrade(int kor, int eng, int mat) {
			
			char grd= ' ';
			switch((int)getAverrage(kor,eng,mat)/10){
			case 10: case 9:  grd = '수'; break;
			case 8:			 grd = '우'; break;
			case 7: 		 grd = '미'; break;
			case 6:			 grd = '양'; break;
			default: 		 grd = '가';
				
			}
			return grd;
		}
		
	}
	

 class J15SungJukVO {
	 private String name;
		private int kor;
		private int eng;
		private int mat;
		
		private int tot;
		private double avg;
		private char grd;
		
		public J15SungJukVO() {}

		public J15SungJukVO(String name, int kor, int eng, int mat) {
			
			this.name = name;
			this.kor = kor;
			this.eng = eng;
			this.mat = mat;

		}

		public String getName() {
			return name;
		}

		public void setName(String name) {
			this.name = name;
		}

		public int getKor() {
			return kor;
		}

		public void setKor(int kor) {
			this.kor = kor;
		}

		public int getEng() {
			return eng;
		}

		public void setEng(int eng) {
			this.eng = eng;
		}

		public int getMat() {
			return mat;
		}

		public void setMat(int mat) {
			this.mat = mat;
		}

		public int getTot() {
			return tot;
		}

		public void setTot(int tot) {
			this.tot = tot;
		}

		public double getAvg() {
			return avg;
		}

		public void setAvg(double avg) {
			this.avg = avg;
		}

		public char getGrd() {
			return grd;
		}

		public void setGrd(char grd) {
			this.grd = grd;
		}

		@Override
		public String toString() {
			return "J15SungJukVO [ name = " + name + ", kor = " + kor + ", eng = "
					+ eng + ", mat = " + mat + ", tot=" + tot + ", avg=" + avg
					+ ", grd=" + grd + "]";
		}
 }	
		
 